#ifndef SHAREPOINTERTEST_H
#define SHAREPOINTERTEST_H

#include <iostream>
#include <memory>

class SharePointerTestB;
class SharePointerTestA : public std::enable_shared_from_this<SharePointerTestA>
{
public:
    SharePointerTestA();
    ~SharePointerTestA();
    void testThisPointer();
    void print();
    std::shared_ptr<SharePointerTestB> spToB;
};

class SharePointerTestB
{
public:
    SharePointerTestB();
    ~SharePointerTestB();
    void print();
    //std::shared_ptr<SharePointerTestA> spToA;
};

class SharedPointerTestC
{
public:
    SharedPointerTestC();
    ~SharedPointerTestC();
    void print();
    void setValue(int nValue);
};

#endif // SHAREPOINTERTEST_H
